package cn.com.connected.controllerthrid;

import cn.com.connected.base.annotations.CheckApi;
import cn.com.connected.base.exception.ErrorCode;
import cn.com.connected.base.exception.ErrorLogRobot;
import cn.com.connected.base.params.JsonResult;
import cn.com.connected.common.config.CurrentData;
import cn.com.connected.common.emnus.Profile;
import cn.com.connected.controller.BaseController;
import cn.com.connected.service.MemberService;
import cn.com.connected.service.WeChatCommonService;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;

/**
 * Created by 邵明生
 * @data: 2018.1.24.
 * @Description：小程序接口
 */
@Api(tags = "小程序接口")
@RestController
public class WeChatCommonController extends BaseController {

    @Resource
    private WeChatCommonService weChatCommonService;

    @Resource
    private MemberService memberService;

    @Value("${wechat.devOpenId}")
    private String devOpenId;

    /**
     * 作者:   邵明生
     * 时间:   2019/3/25 14:19
     * 描述:   小程序登录
     *          登录凭证校验。通过 wx.login 接口获得临时登录凭证 code 后传到开发者服务器调用此接口完成登录流程。更多使用方法详见小程序登录。
     *          GET https://api.weixin.qq.com/sns/jscode2session
     * 本项目是直接颁发token了
     */
    @GetMapping("/wechat/v2/api/wx-login/{code}")
    public JsonResult<String> wxLogin(@PathVariable String code){
        String openId  = ErrorLogRobot.PROFILE.equals(Profile.dev.getValue())?devOpenId:weChatCommonService.wxLogin(code);

        String token = memberService.memberLogin(openId);

        return new JsonResult(token,ErrorCode.SYSTEM_SUCCESS);
    }

    /**
     * 前端直接获取 昵称和头像
     */
//    @PostMapping("/wechat/v1/api/small/user-info")
//    public void userInfo(@RequestParam String tokenUserId, @RequestBody SmallFullUserInfoEncrypt userInfo){
//    }

    /***
     * 老的获取方式 前端直接授权获取到含手机号的加密串 后端解密
     * 此处用新的获取方式，前端给一个授权code，后端自己去获取
     * @return
     */
//    @CheckApi
//    @GetMapping("/wechat/v1/api/phone-number/{code}")
//    public JsonResult<String> phoneNumber(@PathVariable String code){
//        String phone = weChatCommonService.phoneNumber(code);
//        memberService.memberEditMobile(CurrentData.getMemberId(),phone);
//        //更新手机号
//        return new JsonResult<>(phone,ErrorCode.SYSTEM_SUCCESS);
//    }

}
